package com.example.demo.service;

import com.example.demo.model.core.PageVo;
import com.example.demo.model.form.RoleForm;
import com.example.demo.model.form.RolePermForm;
import com.example.demo.model.query.RoleQuery;
import com.example.demo.model.vo.OptionVO;
import com.example.demo.model.vo.RoleVO;
import com.example.demo.model.vo.RouteVO;

import java.util.List;
import java.util.Set;

public interface SysRoleService {

    void add(RoleForm form);

    void update(RoleForm form);

    void delete(List<String> ids);

    PageVo<RoleVO> page(RoleQuery query);

    RoleForm form(String id);

    /**
     * 获取角色权限，权限ID
     * @param roleId
     * @return
     */
    List<String> getRolePermIds(String roleId);

    /**
     * 更新角色权限
     * @param form
     */
    void updateRolePerms(RolePermForm form);

    List<OptionVO<String>> options(RoleQuery query);
    /**
     * 获取角色权限，权限标识
     * @param roleIds
     * @return
     */
    Set<String> getRolePermissions(Set<String> roleIds);

    /**
     * 获取角色路由
     * @param roleIds 角色编码集合
     * @return
     */
    List<RouteVO> getRoleRoutes(Set<String> roleIds);

}
